#include <algorithm>
#include <iostream>
#include <vector>
#include <cassert>
#include <map>
using namespace std;
using ll = long long;
bool solve() {
string s;
int m;
string l,r;
cin>>s>>m;
cin>>l>>r;
int n = s.length();
map<char,vector<int>> ind;
for (int i=0; i<n; i++) {
ind[s[i]].push_back(i);
}
// from [l[i],r[i]], greedily pick c that is farthest
// right. this minimizes the chance of completing
// the subsequence. this is the best we can do
// at any index i.
int at = -1;
for (int i=0; i<m; i++) {
int to = -1;
for (char c=l[i]; c<=r[i]; c++) {
auto it = upper_bound(ind[c].begin(), ind[c].end(), at);
if (it == ind[c].end()) return true;
to = max(to, *it);
}
at = to;
}
return false;
}
int main() {
ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
int t;
cin>>t;
while (t--) {
cout<<(solve() ? "YES" : "NO")<<"\n";
}
return 0;
}
MATCHES Playing with Matches | HRDSEQ Hard Sequence |
DRCHEF Doctor Chef | 559. Maximum Depth of N-ary Tree |
821. Shortest Distance to a Character | 1441. Build an Array With Stack Operations |
1356. Sort Integers by The Number of 1 Bits | 922. Sort Array By Parity II |
344. Reverse String | 1047. Remove All Adjacent Duplicates In String |
977. Squares of a Sorted Array | 852. Peak Index in a Mountain Array |
461. Hamming Distance | 1748. Sum of Unique Elements |
897. Increasing Order Search Tree | 905. Sort Array By Parity |
1351. Count Negative Numbers in a Sorted Matrix | 617. Merge Two Binary Trees |
1450. Number of Students Doing Homework at a Given Time | 700. Search in a Binary Search Tree |
590. N-ary Tree Postorder Traversal | 589. N-ary Tree Preorder Traversal |
1299. Replace Elements with Greatest Element on Right Side | 1768. Merge Strings Alternately |
561. Array Partition I | 1374. Generate a String With Characters That Have Odd Counts |
1822. Sign of the Product of an Array | 1464. Maximum Product of Two Elements in an Array |
1323. Maximum 69 Number | 832. Flipping an Image |